package writtenexamination.yuewen;

/**
 * @author cyt
 * @create 2020-10-21 下午 8:00
 */
public class Tc {
    public static void main(String[] args) {

    }

//    public String removeDuplicatedChars(String str) {
//        // write code here
//        int[] cnt = new int[26];
//        int pos = 0;
//
//        for (int i = 0; i < str.length(); i++) {
//            cnt[str.charAt(i) - 'a']++;
//        }
//        for (int i = 0; i < str.length(); i++) {
//            if (str.charAt(i) < str.charAt(pos)) {
//                pos = 1;
//            }
//            if (--cnt[str.charAt(i) - 'a'] == 0) {
//                break;
//            }
//        }
//        return str.length() == 0 ? "" :
//                str.charAt(pos) + removeDuplicatedChars(str.substring(pos + 1).replaceAll("" + str.charAt(pos), ""));
//    }

    public String removeDuplicatedChars(String str) {
        if (str == null || str.length() <= 1) {
            return str;
        }
        int[] map = new int[26];
        char[] strArr = str.toCharArray();
        for (char c : strArr) {
            map[c - 'a']++;
        }
        int minpos = 0;

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) < str.charAt(minpos)) {
                minpos = i;
            }
            if (--map[str.charAt(i) - 'a'] == 0) {
                break;
            }
        }
        return str.charAt(minpos) + removeDuplicatedChars(
                str.substring(minpos
                        + 1).replaceAll("" + str.charAt(minpos), "")
        );
    }
}
